/**********************************************************************************************************************
 *
 * Project:    mGameEngine
 * File:       gamestate.h
 * Author:     karooolek
 * Created on: 2009-04-09
 *
 **********************************************************************************************************************/

#ifndef GAMESTATE_H_
#define GAMESTATE_H_

namespace mGameEngine
{
namespace Game
{

/**
 * Game state interface.
 */
class GameState
{
public:
    /**
     * Begin game state.
     * Called once when game state begins.
     */
    virtual void begin() = 0;

    /**
     * End game state.
     * Called once when game state ends.
     */
    virtual void end() = 0;

    /**
     * Game state main loop.
     */
    virtual void idle() = 0;

    /**
     * Game state draw loop.
     */
    virtual void draw() const = 0;
};

}
}

#endif // GAMESTATE_H_
